/**
 * 
 */
package jheej5024;

public class J14_Array {

	//배열array
	//지금까지 우리가 사용한 변수는 하나의 저장영역에 하나의 이름으로 
	//하나의 값만을 저장해었음
	//만일, 데이터 건수 여러 개인  경우 변수를 여러 개 선언해서 사용해야 함
	//학생 1 명의 성적처리 : 변수 7개 사용
	//학생 10 명의 성적처리 : 변수 7*10 개 사용
	//이렇게 하면 작성해야 하는 코드도 많아지고 반복문 사용도 힘들어 짐
	
	//자바에서는 동일한 자료형의 객체나 기본자료형을 묶어서group 배열로 사용할 수 있음
	
	//배열에 속하는 각 개체는 "배열의 구성요소"라 함
	//배열에서 구성요소의 갯수를 알아내려면 length필드를 이용
	//배열에 값을 저장하거나 읽으려면
	//각 구성요소의 index(위치)를 지정해야 함
	//배열의 index는 0부터 시작함
	//배열은 일단 크기가 정해지면 변경 불가
		
	public static void main(String[] args) {
    //배열을 사용하지 않은 성적처리 프로그램
	int stdno1 = 123456789;   //학생번호
	int kor1 = 98;            //국어
	int eng1 = 99;            //영어
	int mat1 = 98;            //수학

	int stdno2 =234567891;   //학생번호
	int kor2 = 98;            //국어
	int eng2 = 99;            //영어
	int mat2 = 98;            //수학
	
	int stdno3 =345678901;   //학생번호
	int kor3 = 98;            //국어
	int eng3 = 99;            //영어
	int mat3 = 98;            //수학

	int tot1 = kor1 + eng1 + mat1;
	int tot2 = kor2 + eng2 + mat2;
	int tot3 = kor3 + eng3 + mat3;
	
	
	//배열을 사용한 성적처리 프로그램
	int[] stdno = new int[3];    //3명분의 학생번호
	int[] kor = new int[3];
	int[] eng = new int[3];
	int[] mat = new int[3];
	
	//배열의 구성요소에 값 저장
	stdno[0] = 123456789;
	stdno[1] = 234567890;
	stdno[2] = 345678901;

	kor[0] = 98;
	kor[1] = 98;
	kor[2] = 98;
	
	eng[0] = 99;
	eng[1] = 99;
	eng[2] = 99;
	
	mat[0] = 98;
	mat[1] = 98;
	mat[2] = 98;
	
	System.out.println( stdno );
	System.out.println( stdno[0] );
	System.out.println( stdno[1] );
	System.out.println( stdno[2] );
	
    System.out.println( kor );
    System.out.println( kor[0] );
    System.out.println( kor[1] );
    System.out.println( kor[2] );
    
    System.out.println( eng );    
    System.out.println( eng[0] );    
    System.out.println( eng[1] );    
    System.out.println( eng[2] );    
    
    System.out.println( mat );
    System.out.println( mat[0] );
    System.out.println( mat[1] );
    System.out.println( mat[2] );
    
    int[]tot = new int[3];
    /*tot[0] = kor[0] + eng[0] + mat[0];    
    tot[1] = kor[1] + eng[1] + mat[1];   
    tot[2] = kor[2] + eng[2] + mat[2];   */
    
    for(int i = 0; i<=2; ++i)
      tot[i] = kor[i] + eng[i] + mat[i]; 
    
    System.out.println(tot);
    System.out.println(tot[0]);
    System.out.println(tot[1]);
    System.out.println(tot[2]);
    
    //문제1:복권 추첨을 위한 난수 6개 만들어
    //myLotto라는 배열에 저장하고 모두 출력
    //로또 6/45에 근거해서 1 - 45 범위내 난수 사용
    
    //전희주 풀이
    
     int[] myLotto = new int[6];
     myLotto[0] = (int) (Math.random()*45 )+1;
     myLotto[1] = (int) (Math.random()*45 )+1;
     myLotto[2] = (int) (Math.random()*45 )+1;
     myLotto[3] = (int) (Math.random()*45 )+1;
     myLotto[4] = (int) (Math.random()*45 )+1;
     myLotto[5] = (int) (Math.random()*45 )+1;
    
     for(int j=0; j<6; ++j) {
    	myLotto[j] = (int) (Math.random()*45 )+1;
    	
    	 System.out.println(myLotto[j]);
    	
    	 
    //배열 선언 및 값 초기화
    char[] grade = {'수','우','미','양','가'};
    //char[]grade = new char[5];
    //grade[0] = '수';
    //grade[1] = '우';
    //grade[2] = '미';
    //grade[3] = '양';
    //grade[4] = '가';
   System.out.println(grade.length); 	 
    for (int i=0; i<grade.length; ++i)	 
    	 System.out.println(grade[i]);
    	 
    
    //Iterating on Array
    //JDK5 이전에서는 for문과 배열의 index를 이용해서 배열의 값을 출력했음
    //JDK5이상에서는 for문이 향상되었음
    //즉, 배열의 index없이 배열을 반복처리 가능
    //for (배열의구성요소자료형 변수명 :배열명)
    
    for(char g:grade)
    System.out.println(g);
    
    //stdno
    for(int s:stdno)
    System.out.println(s);
    
    //kor
    for(int k:kor)
    	System.out.println(k);
    
    //eng
    for(int e:eng)
    System.out.println(e);
    
    //mat
    for(int m:mat)
    	System.out.println(m);
    
    //myLotto
    for(int my:myLotto)
    System.out.println(my);
    
    
    
    
    
     }
    
	}

}
